home *** CD-ROM | disk | FTP | other *** search
/ Over 1,000 Windows 95 Programs / Over 1000 Windows 95 Programs (Microforum) (Disc 1).iso / 1132 / readme.txt < prev    next >
Text File  |  1997-04-16  |  11KB  |  317 lines

  1. NEURAL NETWORKS STARTER KIT
  2.  
  3. COPYRIGHT  Southern Scientific CC
  4. 17 CAPRI RD 
  5. ST JAMES
  6. SOUTH AFRICA 7951
  7.  
  8.  
  9. The Neural networks code used to construct this release was developed 
  10. as an exercise to teach myself about OOP and MS Windows, and to design 
  11. my own tools for the construction of neural networks.
  12.  
  13. This release is intended to help people get started, and contains : 
  14.  
  15. 1)    A working backprop neural network application
  16. for windows (SLUG.EXE), together with the resource files (and an
  17. example for DOS).  
  18. 2)    The source code for these programs, to illustrate the
  19. use of the starter kit.  
  20. 3)    Full documentation on the basic units contained in the
  21. starter kit, so that you can see exactly what it contains.
  22.  
  23. These are shareware.  Please distribute these as you see fit.
  24. If you find them useful or instructive, please fill in the form
  25. below and mail it, together with $10, to the above address.
  26. Questions can be directed to me via E-mail :
  27. CHUCK@PSIPSY.UCT.AC.ZA
  28.  
  29. THE STARTER KIT is not shareware, costs $40 for people who
  30. register this release ($50 otherwise), and contains the DOS and
  31. Windows executables (TPU and TPW for BP7) of the basic unit and
  32. the dynamic matrices and vectors unit.  You also get the source
  33. code for the BPNet unit, which shows how to use the basic units
  34. to construct a network object.  Included is a Croupier object
  35. which allows you to randomly "deal" from a deck of data, and
  36. some other small things.
  37.  
  38. You can pay for SLUG or order the starter kit by phone/fax using a Visa or
  39. Mastercard. The phone/fax numbers are (27)-21-788-6613/788-2248. If you want to
  40. use E-mail or fax, please use the order form below and remember your phone/fax
  41. number and your credit card number.  If you use papermail, you must include a
  42. bank order drawn on a South African bank.
  43.  
  44.  
  45. The Implementation of the basic units, NNUNIT and DYNA2
  46.  
  47. The basic unit implements a Neuron object and a Neuralnet
  48. object, hopefully in a very general way, and defines an
  49. underlying paradigm for specific network constructions.
  50. Creating a network is easy, as the following code shows:
  51.  
  52.      neuralnet.init(incount+hiddencount+outcount+1);
  53.                                     {fully connected...}
  54.                                     {insert fields}
  55.      addfield(inputfield,1,incount);
  56.      addfield(hiddenfield,incount+1, incount+hiddencount);
  57.      addfield(outputfield,incount+hiddencount+1,count-1);
  58.      addfield(offset,count,count);
  59.  
  60.      setfieldsignal(hiddenfield,sigmoid);
  61.      setfieldsignal(outputfield,sigmoid);
  62.      setfieldsignal(offset,one);
  63.  
  64.      setconnections;
  65.      calcallstates;    {essentially switches on offset neuron}
  66. {---------------------------------}
  67. procedure simpleBPnet.setconnections; {connect feedforward net}
  68. {---------------------------------}
  69. begin
  70.      nofeedback;
  71.      disconnectbetween(inputfield,outputfield);
  72.      disconnectbetween(outputfield,inputfield);
  73.      disconnectbetween(outputfield,hiddenfield);
  74.      disconnectbetween(hiddenfield,inputfield);
  75.  
  76.      disconnectbetween(offset,inputfield);
  77.      disconnectbetween(inputfield,offset);
  78.      disconnectbetween(hiddenfield,offset);
  79.      disconnectbetween(outputfield,offset);
  80.  
  81.      disconnect(inputfield);
  82.      disconnect(outputfield);
  83.      disconnect(hiddenfield);
  84.  
  85. end;
  86.  
  87. It essentially sees a network as a 'bag of neurons', completely
  88. connected, but divided into 'neuron fields' (think of these as
  89. subsets, not necessarily disjoint) which, for instance, you can
  90. use to define neural net layers higher up in the object
  91. hierarchy.  Neurons can easily change their transfer funtions,
  92. and networks can easily change their connectivity.  Several
  93. neuron transfer funtions are provided, and you can easily add
  94. you own.
  95.  
  96. The Dyna2 unit contains dynamic matrices and vectors, which are
  97. used in NNUnit to define connectivity, and generally run things
  98. like data presentation and training.
  99.  
  100. Extensive use is made of the Tcollection object in the
  101. implementation (see the included documentation), and all objects
  102. are streamable.
  103.  
  104.  
  105.  
  106. HOW TO USE SLUG
  107.  
  108. SLUG is a front end for a backprop net with 3 layers, using a
  109. sigmoid transfer function in the hidden layer and linear
  110. transfer functions in the output layer.  SLUG uses the steepest
  111. descent optimization method (simple backprop). You can set the
  112. number of nodes in each layer, and training parameters.  SLUG
  113. saves networks on dos streams.
  114.  
  115. SLUG tries to be very friendly to other Windows apps, and thus
  116. slows down a little.  Still, you may find that it hogs too much
  117. CPU - let me know.
  118.  
  119. Most of the functionality of the menu is duplicated with buttons
  120. on the control panel.  This area is divided into two panels, one
  121. to report progress ( for this release, only the error box and
  122. data count box will show change during training) and another to
  123. reflect current static training settings.  The data count box
  124. shows how many times the dataset has been presented.
  125.  
  126. The training parameters panel shows the current training
  127. parameters.  These are edit controls (they'll be static in the
  128. next release), but you can only enter the data through the
  129. parameters dialog box.
  130.  
  131. Most buttons are self explanatory.  The shake button randomly
  132. perturbs the weights slightly.  This is useful if you find your
  133. net stuck in a local minimum during training.  Hit the shake
  134. button a couple of times to try to get out.  It is also good to
  135. do this before training starts.
  136.  
  137. When you open a logfile, you can first check the append box to
  138. append training info to an existing logfile.  The logfile holds
  139. a record of the training progress, and reports the weights
  140. matrix and performance of the net.  Both data and log files must
  141. be open before training can commence.
  142.  
  143. The pause button pauses training, if you wish to do this for
  144. some reason.  It also records the pause in the log file.
  145.  
  146. The file menu is used to save and retrieve networks from disk.
  147. If a valid network is present, the network icon switches on and
  148. the structure of the layers is displayed.  The parameters menu
  149. is used to set training parameters.  The items presented in the
  150. dialog box are:
  151.     
  152. Learning rate :  This parameter effectively determines the step
  153. size during the downhill crawl of the error parameter in weight
  154. space.  Setting this parameter is a black art.  All I can tell
  155. you is that the larger the network, the smaller this should
  156. initially be.  Ballpark figure for the 'toy' problem XOR is 0.5.
  157. Don't panic if the error sometimes creeps up during training -
  158. this happens for various technical reasons, but usually turns
  159. around after a while.  If it shoots up, you can click the
  160. parameters button during training and reduce the value.  Also
  161. remember that the weights are randomized before training starts.
  162. In all optimization methods, where you end up depends on where
  163. you start, so if your net gets stuck in a local minimum, and
  164. shaking it doesn't get you out, you may have success by starting
  165. over (i.e. the training sessions are not necessarily
  166. repeatable).
  167.  
  168.  
  169. Momentum : This is a measure of how much of a previous training
  170. step is retained in the current step.  Make this betweeen 0 and
  171. 1.  I usually have it less than 0.9.
  172.  
  173. Kmod : Unused at present.
  174.  
  175. Maximum error : This is the convergence criterion. The error is
  176. calculated as SUM(over output layer) ( |desired output - current
  177. output | )
  178.  
  179. Maximum iterations : When to give up.
  180.  
  181.  
  182. The RUN menu item reads an input file and propagates the data
  183. through the net once.  This is intended for trained nets.
  184.  
  185. The structure of the data file :
  186.  
  187. Training and running data are stored in text files.  For the
  188. windows app, two ignored lines followed by any number of lines
  189. with an input/desired output pair (floating point) on each line.
  190. Eg for the XOR problem, the datafile looks like this :
  191.  
  192. test XOR            ------- line 1 : ignored in SLUG
  193. 4 0.5 0.8 0.0 0.1 10000        ------- line 2 : ignored in SLUG
  194. 1 1 0                ------- first IO pair
  195. 0 0 0
  196. 1 0 1
  197. 0 1 1                ------- last IO pair and last line in the file
  198.  
  199. In the DOS example, the first line is the title of the run, and
  200. the second line contains, in order : number of training
  201. lines,learning rate,momentum,kmod,maximum error, maximum
  202. iterations.
  203.  
  204.  
  205. The log file for the above example typically looks like this :
  206.  
  207. IO MATRIX
  208.   1.0000  1.0000  0.0000   ---------- the matrix provided by you 
  209.   0.0000  0.0000  0.0000
  210.   1.0000  0.0000  1.0000
  211.   0.0000  1.0000  1.0000
  212.  
  213. DESIRED MATRIX      ----------- the last column of the IO matrix
  214.   0.0000
  215.   0.0000
  216.   1.0000
  217.   1.0000
  218.  
  219. INPUT MATRIX
  220.   1.0000  1.0000
  221.   0.0000  0.0000
  222.   1.0000  0.0000
  223.   0.0000  1.0000
  224.  
  225. Event # 32    0.883410      ------------ the error at intervals
  226.  
  227. Network response: 
  228.  
  229.  inputvec  :    1.00    1.00 response :    0.015
  230.  inputvec  :    0.00    0.00 response :    0.003
  231.  inputvec  :    1.00    0.00 response :    1.002
  232.  inputvec  :    0.00    1.00 response :    1.001
  233.  
  234. Final Weights
  235.  
  236.   0.0000  0.0000 -5.2722 -1.4644  0.0000  0.0000        
  237.   0.0000  0.0000 -6.7207 -1.4960  0.0000  0.0000
  238.   0.0000  0.0000  0.0000  0.0000 -3.0197  0.0000
  239.   0.0000  0.0000  0.0000  0.0000  3.1998  0.0000
  240.   0.0000  0.0000  0.0000  0.0000  0.0000  0.0000
  241.   0.0000  0.0000  0.7118  1.4773 -0.5769  0.0000
  242.  
  243. ---- rows are origin of connections, columns destination, i.e.
  244. in row one, one finds that neuron 1 is connected to neurons 3
  245. and 4, and row 5 shows that neuron 5 (the output neuron) does
  246. not provide input to anything.  The last row is the offset
  247. neuron, number 6, which provides inputs to all except the two
  248. inputs and itself.
  249.  
  250.  
  251. KNOWN BUGS AND HASSLES (TO BE FIXED IN FUTURE RELEASES)
  252.  
  253. 1.    In Slug :
  254.  
  255. a)    Make text controls which are merely informative static.
  256. b)    Perhaps put informative data in a separate dialog window.
  257. c)    Icon doesn't show when minimized.
  258. d)    Add graphical display of network and network training progress.
  259. e)    Add help.
  260.  
  261. 2.    In the starter kit :
  262.  
  263. a)    Add error checking for failures to allocate things on the heap.
  264. b)    Make Croupier object index work with integer, not real dynamic vectors.
  265. c)    Priority one : add conjugate gradient training.
  266. d)    Work on second derivative training methods.
  267. e)    Is it worth it to implement everything using integer arithmetic only?
  268. f)    Add automatic data scaling.
  269. g)     Maybe get rid of float object - too much memory overhead...
  270. h)    Make help files.
  271.  
  272. Suggestions are not only very welcome, but perhaps even required.
  273.  
  274.  
  275. ---------------------------- CUT HERE -----------------------------
  276.  
  277. REGISTRATION / ORDER FORM
  278.  
  279.  
  280. NAME        :__________________________________
  281.  
  282. ADDRESS    :    __________________________________
  283.  
  284.         __________________________________
  285.  
  286.         __________________________________
  287.  
  288.         __________________________________
  289.  
  290.  
  291.  
  292. PHONE     : COUNTRY CODE _____ AREA CODE______ NUMBER______________
  293.  
  294. FAX        :_______________
  295.  
  296. E-MAIL        :______________________________________
  297.  
  298.  
  299. Mark the correct choices :
  300.  
  301. ____ $10 for registration of SLUG only.
  302.  
  303. ____ $50 for registration of SLUG and the Starter Kit.
  304.  
  305. ____ $40 for the Starter Kit Only (I have registered my copy of SLUG)
  306.  
  307. ____ Bank draft is enclosed.
  308.  
  309. ____ Debit my
  310.     
  311.         ____ MASTERCARD   NUMBER _______________________________
  312.  
  313.         ____ VISA CARD    NUMBER   _______________________________
  314.  
  315.  
  316. -----------------------------------------------------------------------
  317.